Assignment to sockets and cores in processors has been able to be specified at most for each loop in syntax or for each subroutine in a program corresponding to an application that performs each process. Accordingly, for more detailed (finer-grained) syntax, the assignment has not been able to be specified at the application side and has been specified at the level of an operating system (OS). This limits improvement in processing efficiency and processing performance.
For example, the concept of tasks has been introduced into OpenMP (registered trademark), which is syntax of a thread parallel application for use for high performance computing (HPC) processors and so on. OpenMP allows the application side to select a plurality of sockets and cores.
Related techniques are disclosed in, for example, Japanese Laid-open Patent Publication No. 2003-6175 and Japanese Laid-open Patent Publication No. 2008-84009, and Stephen L. Olivier, Allan K. Porterfield, Kyle B. Wheeler, and Jan F. Prins, “Scheduling task parallelism on multi-socket multicore systems”, in Proceedings of the 1st International Workshop on Runtime and Operating Systems for Supercomputers (ROSS '11), 2011.
Since the concept of tasks has been introduced as described above, in application programs, assignment to sockets and cores for each syntax unit may be performed using information inside the application. This enables improvement in processing efficiency and processing performance.
However, in the case of a conventional algorithm such as simple first-in first-out or round robin scheme, or the like, consideration is not taken for memory access in each task, for example. Influence of such an issue limits improvement in processing efficiency and processing performance.